package cn.pdx.elec.dao;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;


/**
 * @Name:CommonDao
 * @Description:公共接口对象
 * @author 彭定旭
 * @version：v1.00（版本号）
 * @Create Date:2013-3-24(创建日期)
 * @parameters:<T> 泛型对象
 * @return:无（有什么就写什么，么有就写无）
 */
public interface CommonDao<T> {

	/**
	 * @Name:save
	 * @Description:保存对象
	 * @author 彭定旭
	 * @version：v1.00（版本号）
	 * @Create Date:2013-3-24(创建日期)
	 * @parameters:T entity
	 * @return:无（有什么就写什么，么有就写无）
	 */
	public void save(T entity);
	
	/**
	 * @Name:update
	 * @Description:修改对象
	 * @author 彭定旭
	 * @version：v1.00（版本号）
	 * @Create Date:2013-3-25(创建日期)
	 * @parameters:T entity
	 * @return:无（有什么就写什么，么有就写无）
	 */
	public void update(T entity);
	
	/**
	 * 通过Id找对象
	 * @return T 类型
	 */
	public T findObjectById(Serializable id);
	
	/**
	 * 通过Ids删除对象
	 * @return 无
	 * Serializable ... ids==Serializable [] ids,表示数组
	 * 用id数组
	 */
	public void deleteObjectByIds(Serializable ... ids);
	
	/**
	 * 通过集合删除对象
	 * @param list
	 */
	
	public void deleteObjectByCollection(Collection<T> entities);
	
	/**
	 * 通过条件查询
	 * @param hqlWhere
	 * @param params
	 * @param orderby
	 * List<T>要用泛型,其他任何对象都可以查询出来
	 * @return
	 */
	
	public List<T> findCollectionByConditionNoPage(String hqlWhere,Object[] params, LinkedHashMap<String, String> orderby);
	
	
	/**
	 * @Name:saveObjectByCollection
	 * @Description:通过一个list集合保存对象
	 * @author 彭定旭
	 * @version：v1.00（版本号）
	 * @Create Date:2013-4-2(创建日期)
	 * @parameters:Collection<T> entities 集合对象
	 * @return:无
	 */
	void saveObjectByCollection(Collection<T> entities);
}
